package br.com.sgmf.web.managedbean;

import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import br.com.sgmf.model.Setor;
import br.com.sgmf.service.SetorService;

@Component
@ManagedBean
@RequestScoped
public class SetorBean {

	private static final String SETOR_SALVO_COM_SUCESSO = "Setor salvo com sucesso!";
	private static final String SETOR_EXCLUIDO_COM_SUCESSO = "Setor excluído com sucesso!";
	private static final String ERRO_AO_SALVAR_SETOR = "Erro ao salvar Setor";
	private static final String ERRO_AO_EXCLUIR_SETOR = "Erro ao excluir Setor";

	private Setor setor;
	private List<Setor> setores;

	@Autowired
	private SetorService setorService;

	@PostConstruct
	public void inicializar() {
		setor = new Setor();
		setores = setorService.findAll();
	}

	public String salvar() {
		FacesContext context = FacesContext.getCurrentInstance();
		FacesMessage message;

		try {
			setorService.saveOrUpdate(setor);
			message = new FacesMessage(FacesMessage.SEVERITY_INFO,
					SETOR_SALVO_COM_SUCESSO, null);
			inicializar();
		} catch (Exception e) {
			message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					ERRO_AO_SALVAR_SETOR, null);
			e.printStackTrace();
		}

		context.addMessage(null, message);
		return null;
	}

	public void novo() {
		setor = new Setor();
	}

	public String editar(Setor setor) {
		this.setor = setor;
		return null;
	}

	public String excluir(Setor setor) {
		FacesContext context = FacesContext.getCurrentInstance();
		FacesMessage message;

		try {
			setorService.delete(setor);
			message = new FacesMessage(FacesMessage.SEVERITY_INFO,
					SETOR_EXCLUIDO_COM_SUCESSO, null);
			inicializar();
		} catch (Exception e) {
			message = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					ERRO_AO_EXCLUIR_SETOR, null);
			e.printStackTrace();
		}
		context.addMessage(null, message);
		return null;
	}

	public Setor getSetor() {
		return setor;
	}

	public void setSetor(Setor setor) {
		this.setor = setor;
	}

	public List<Setor> getSetores() {
		return setores;
	}

	public void setSetores(List<Setor> setores) {
		this.setores = setores;
	}

	public SetorService getSetorService() {
		return setorService;
	}

	public void setSetorService(SetorService setorService) {
		this.setorService = setorService;
	}

}
